<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/2/23
 * Time: 9:20
 */
if (empty(ONLY_SAFE_POINT)) exit('Hacker, Hello for you!');

require_once 'src/Medoo.php';
require_once 'src/Check.php';
require_once 'src/Assist.php';
require_once 'models/User.php';

use Medoo\Medoo;
use Check\Check;
use Assist\Format;
use Model\User;

$db = new Medoo([
    // required
    'database_type' => 'mysql',
    'database_name' => '3112743654',
    'server' => 'localhost',
    'username' => '3112743654',
    'password' => 'hanlulu',
    'charset' => 'utf8',

    // [optional]
    'port' => 3306,
//    'prefix' => 'PREFIX_',
//    'socket' => '/tmp/mysql.sock',
    'option' => [
        PDO::ATTR_CASE => PDO::CASE_NATURAL
    ],
	/*'command' => [
        'SET SQL_MODE=ANSI_QUOTES'
    ]*/
]);

/* 页面：首页 */
if (empty($_GET['o']) || $_GET['o'] == 'index') {
    $datas = $db->select("system", "*", [
        "ORDER" => ["ver" => 'DESC'],
        "LIMIT" => 1,
    ]);

    include 'views/index.html';
    exit();
}

/* 动作：登陆 */
if ($_GET['o'] == 'login') {
    $username = (!empty($_POST['username'])) ? $_POST['username'] : false;
    if ($username == false) Format::feedback('200', '服务器未接收到用户名，如果您不是非法侵入，请加群反馈给管理员。');

    $userdata = $db->select("user", "*", [
        "username" => $username,
    ]);

    $password = (!empty($_POST['password'])) ? $_POST['password'] : false;

    if (isset($password) && !empty($userdata) && password_verify($password, $userdata[0]['password_hash'])) {
        Format::feedback('101', '登录成功。');
    } else {
        Format::feedback('202', '密码有误。');
    }
}

/* 动作：注册 */
if ($_GET['o'] == 'signup') {
    $userData['username'] = (!empty($_POST['username'])) ? $_POST['username'] : false;
    if ($userData['username'] == false) Format::feedback('201', '账号有误。');

    if (empty($_POST['password'])) Format::feedback('200', '密码未填写。');
    $userData['password_hash'] = password_hash($_POST['password'], PASSWORD_DEFAULT);

    if (empty($_POST['email']) || !Check::isEmail($_POST['email'])) Format::feedback('202', '邮箱有误。');
    $userData['email'] = $_POST['email'];

    if (!isset($_POST['nickname']) || !Check::isNickname($_POST['nickname'])) Format::feedback('203', '昵称有误。');
    $userData['nickname'] = $_POST['nickname'];

    if (!isset($_POST['city'])) Format::feedback('203', '服务端未接收到城市参数。');
    $userData['city'] = (int)$_POST['city'];

    $userModel = new User();
    $userCreate = $userModel->signUp($db, $userData);
    if (!$userCreate) Format::feedback('101', '用户创建成功。');
}

/* 动作：找回密码 */
if ($_GET['o'] == 'getBackPassword') {
    Format::feedback('299', '功能未开放。');
}

/* 页面：领主 */
if ($_GET['o'] == 'lord') {
//    if (empty($_SESSION['user']['id'])) {
    if (!empty($_SESSION['user']['id'])) {
        Format::feedback('201', '用户状态失效，请注销，并重新登陆。');
    } else {
        $user = $db->select("user", ["*"], ["id" => $_SESSION['user']['id']]);
    }

    if (!empty($user)) {
//    if (empty($user)) {
        Format::feedback('201', '用户信息查询出现异常，请注销，并重新登陆。');
    } else {
        include 'views/lord.html';
        exit();
    }
}

/* 动作：改名 */
if ($_GET['o'] == 'rename') {
    $nickname = Check::string($_POST['nickname'], 16);

    if (empty($nickname)) {
        Format::feedback('201', '名称长度或格式有误。');
    } else {
        $db->update("user", ["nickname" => $nickname], ["id" => $_SESSION['user']['id']]);
        Format::feedback('101', '更名成功，如无反应，请刷新后查看。');
    }
}

/* 动作：更改配置 */
if ($_GET['o'] == 'config') {
//    todo: Config need redesign.
    Format::feedback('299', '功能未开放。');
}

/* 动作：查看任务列表 */
if ($_GET['o'] == 'taskList') {
    $db->select("task_list", ["*"], ["user_id" => $_SESSION['user']['id']]);

    if (empty($troop)) {
        Format::feedback('201', '获取军队信息出现异常，请注销，并重新登陆。');
    } else {
        Format::feedback('101', '数据加载完毕。');
    }
}

/* 页面：查看任务 */
if ($_GET['o'] == 'task') {
    $db->select();

    if (empty($troop)) {
        Format::feedback('201', '获取军队信息出现异常，请注销，并重新登陆。');
    } else {
        Format::feedback('101', '数据加载完毕，即将显示页面。');
    }
}

/* 页面：建筑 */
if ($_GET['o'] == 'building') {
    if (empty($_SESSION['user']['id'])) {
        Format::feedback('201', '用户状态失效，请注销，并重新登陆。');
    } else {
        $user = $db->select("building", ["*"], ["id" => $_SESSION['user']['id']]);
    }

    if (empty($user)) {
        Format::feedback('201', '获取建筑信息出现异常，请注销，并重新登陆。');
    } else {
        Format::feedback('101', '数据加载完毕，即将显示页面。');
    }
}

/* 动作：建造 */
if ($_GET['o'] == 'build') {
    Format::feedback('299', '功能未开放。');
}

/* 动作：拆除 */
if ($_GET['o'] == 'build') {
    Format::feedback('299', '功能未开放。');
}

/* 页面：军队 */
if ($_GET['o'] == 'troops') {
    if (empty($_SESSION['user']['id'])) {
        Format::feedback('201', '用户状态失效，请注销，并重新登陆。');
    } else {
        $troop = $db->select("troop", ["*"], ["id" => $_SESSION['user']['id']]);
    }

    if (empty($troop)) {
        Format::feedback('201', '获取军队信息出现异常，请注销，并重新登陆。');
    } else {
        Format::feedback('101', '数据加载完毕，即将显示页面。');
    }
}

/* 动作：训练 */
if ($_GET['o'] == 'train') {
    if (empty($troop)) {
        Format::feedback('201', '获取军队信息出现异常，请注销，并重新登陆。');
    } else {
        Format::feedback('101', '新兵训练计划已列入，如需获取细节，请前往任务列表查看。');
    }
}

/* 动作：遣散 */
if ($_GET['o'] == 'disbanded') {
    Format::feedback('299', '功能未开放。');
}

/* 页面：地图 */
if ($_GET['o'] == 'maps') {
/*    if (empty($_SESSION['user']['id'])) {
        Format::feedback('201', '用户状态失效，请注销，并重新登陆。');
    } else {
        $user = $db->select("map", ["*"], ["city" => $_SESSION['user']['id']]);
    }

    if (empty($user)) {
        Format::feedback('201', '用户信息查询出现异常，请注销，并重新登陆。');
    } else {
        Format::feedback('101', '数据加载完毕，即将显示页面。');
    }*/
//    todo: Map need design of city group.
    Format::feedback('299', '功能未开放。');
}

/* 动作：侦查 */
if ($_GET['o'] == 'probe') {
    Format::feedback('299', '功能未开放。');
}

/* 动作：入侵 */
if ($_GET['o'] == 'invade') {
    Format::feedback('299', '功能未开放。');
}

/* 填入 */
if ($_GET['o'] == 'values') {
    Format::feedback('299', '功能未开放。');
}